/* 
1 页面被打开的时候 onShow 
  0 onShow 不同于onLoad 无法在形参上接收 options参数 
  0.5 判断缓存中有没有token 
    1 没有 直接跳转到授权页面
    2 有 直接往下进行 
  1 获取url上的参数type
  2 根据type来决定页面标题的数组元素 哪个被激活选中 
  2 根据type 去发送请求获取订单数据
  3 渲染页面
2 点击不同的标题 重新发送请求来获取和渲染数据 
 */

/*
  参数请求：import { request } from "../../request/index";
  导入解决报错的包：import regeneratorRuntime from '../../lib/runtime/runtime';
*/
import { request } from "../../request/index";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    orders: [],
    tabs: [
      {
        id: 0,
        value: "全部",
        isActive: true
      },
      {
        id: 1,
        value: "待付款",
        isActive: false
      },
      {
        id: 2,
        value: "代发货",
        isActive: false
      },
      {
        id: 3,
        value: "退款/退货",
        isActive: false
      }
    ]
  },
  onShow(){
    // 0 首先判断缓存中有没有userinfo值（即判断用户有没有登录）
    const userinfo = wx.getStorageSync("userinfo");
    if(!userinfo){
      wx.navigateTo({url: "/pages/login/index"});
      return;
    }
    // 1 获取当前的小程序的页面栈-数组(长度最大是10页面)
    let pages = getCurrentPages();
    // console.log(pages);
    // 2 数组中 索引最大的页面就是当前页面
    let currentPage = pages[pages.length-1];
    // 3 获取url上的type参数
    const {type} = currentPage.options;
    // 4 激活选中页面标题 当 type=1时index=0
    this.changeTitleByIndex(type-1);
    this.getOrders(type);
  },
  // 获取订单列表的方法
  async getOrders(type){
    const res = await request({url: "/my/orders/all",data: {type}});
    // console.log(res);
    this.setData({
      // res.orders.map(v=>({...v}))表示对数组进行原样返回
      // .map()重新创建一个数组
      // 增加一个属性create_time_cn   1秒=1000毫秒
      orders: res.orders.map(v=>({...v,create_time_cn:(new Date(v.create_time*1000).toLocaleString())}))
    })
  },
  // 根据标题索引来激活选中 标题数组
  changeTitleByIndex(index){
    // 修改原数组
    let {tabs} = this.data;
    tabs.forEach((v,i)=>i===index?v.isActive=true:v.isActive=false);
    // 赋值到data中
    this.setData({
      tabs
    });
  },
  // 标题点击事件，从子组件传递过来
  handleTabsItemChange(e){
    // 1 获取被点击的标题索引
    const {index} = e.detail;
    // console.log(index);
    // 激活选中页面标题
    this.changeTitleByIndex(index);
    // 2 重新发动请求，注意当type=1时index=0
    this.getOrders(index+1);
  },
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})